/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.mybeans;

import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.swing.JOptionPane;

/**
 *
 * @author avbravo
 */
public class ArregloPagoBeans {

    Sesion sesion;
    private int idArregloPago;
    private String id;
    private String tipoId;
    private int anio;
    private Date fechaArregloPago;
    private double morosidadInicial;
    private int mesesMorosos;
    private double abonoInicial;
    private String palabrasAbonoInicial;
    private double mensualidad;
    private String palabrasAbonoMensual;
    private double saldoActual;
    private String pagado;
    private String Descripcion;
    private String activo;
    private String idMunicipio;
    private java.sql.Date fecha;

    public ArregloPagoBeans() {
        sesion = new Sesion();
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getDescripcion() {
        return Descripcion;
    }

    public void setDescripcion(String Descripcion) {
        this.Descripcion = Descripcion;
    }

    public double getAbonoInicial() {
        return abonoInicial;
    }

    public void setAbonoInicial(double abonoInicial) {
        this.abonoInicial = abonoInicial;
    }

    public int getAnio() {
        return anio;
    }

    public void setAnio(int anio) {
        this.anio = anio;
    }

    public Date getFechaArregloPago() {
        return fechaArregloPago;
    }

    public void setFechaArregloPago(Date fechaArregloPago) {
        this.fechaArregloPago = fechaArregloPago;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public double getMensualidad() {
        return mensualidad;
    }

    public void setMensualidad(double mensualidad) {
        this.mensualidad = mensualidad;
    }

    public int getMesesMorosos() {
        return mesesMorosos;
    }

    public void setMesesMorosos(int mesesMorosos) {
        this.mesesMorosos = mesesMorosos;
    }

    public double getMorosidadInicial() {
        return morosidadInicial;
    }

    public void setMorosidadInicial(double morosidadInicial) {
        this.morosidadInicial = morosidadInicial;
    }

    public String getPagado() {
        return pagado;
    }

    public void setPagado(String pagado) {
        this.pagado = pagado;
    }

    public String getPalabrasAbonoInicial() {
        return palabrasAbonoInicial;
    }

    public void setPalabrasAbonoInicial(String palabrasAbonoInicial) {
        this.palabrasAbonoInicial = palabrasAbonoInicial;
    }

    public String getPalabrasAbonoMensual() {
        return palabrasAbonoMensual;
    }

    public void setPalabrasAbonoMensual(String palabrasAbonoMensual) {
        this.palabrasAbonoMensual = palabrasAbonoMensual;
    }

    public double getSaldoActual() {
        return saldoActual;
    }

    public void setSaldoActual(double saldoActual) {
        this.saldoActual = saldoActual;
    }

    public String getTipoId() {
        return tipoId;
    }

    public void setTipoId(String tipoId) {
        this.tipoId = tipoId;
    }

    public String getActivo() {
        return activo;
    }

    public void setActivo(String activo) {
        this.activo = activo;
    }

    public String getIdMunicipio() {
        return idMunicipio;
    }

    public void setIdMunicipio(String idMunicipio) {
        this.idMunicipio = idMunicipio;
    }

    public int getIdArregloPago() {
        return idArregloPago;
    }

    public void setIdArregloPago(int idArregloPago) {
        this.idArregloPago = idArregloPago;
    }

    public boolean Guardar() {
        try {


            if (TieneArregloPagoSinCancelar() == true) {
                JOptionPane.showMessageDialog(null, "No se puede guardar existe un arreglo de pago\n anterior sin cancerlar. ", "Mensaje", JOptionPane.INFORMATION_MESSAGE);

                return false;
            }
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sql = "INSERT into arreglopago (" +
                    "IDARREGLOPAGO," +
                    "ID  ," +
                    "TIPOID," +
                    "ANIO  ," +
                    "FECHAARREGLOPAGO," +
                    "MOROSIDADINICIAL," +
                    "MESESMOROSOS ," +
                    "ABONOINICIAL," +
                    "PALABRASABONOINICIAL," +
                    "MENSUALIDAD," +
                    "PALABRASABONOMENSUAL," +
                    "SALDOACTUAL," +
                    "PAGADO," +
                    "DESCRIPCION," +
                    "ACTIVO," +
                    "IDMUNICIPIO," +
                    "FECHA," +
                    "USERNAME)" +
                    "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
            PreparedStatement prest = sesion.con.prepareStatement(sql);
            prest.setInt(1, this.idArregloPago);
            prest.setString(2, this.id);
            prest.setString(3, this.tipoId);
            prest.setInt(4, this.anio);
            prest.setDate(5, fechaArregloPago);
            prest.setDouble(6, morosidadInicial);
            prest.setInt(7, mesesMorosos);
            prest.setDouble(8, abonoInicial);
            prest.setString(9, palabrasAbonoInicial);
            prest.setDouble(10, mensualidad);
            prest.setString(11, palabrasAbonoMensual);
            prest.setDouble(12, saldoActual);
            prest.setString(13, "no");
            prest.setString(14, Descripcion);
            prest.setString(15, "si");
            prest.setString(16, sesion.getIdmunicipio());
            prest.setDate(17, fecha);
            prest.setString(18, sesion.getUsername());

            int count = prest.executeUpdate();
            sesion.con.close();
            return true;
        } catch (Exception ex) {

            sesion.MostrarMensajeError("Error", "Clase:ArregloPagoBeans.java\nMetodo:Guardar() " + ex.getMessage().toString());
        }
        return false;
    }

    public boolean TieneArregloPagoSinCancelar() {
        try {

            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sqlquery = "select * from arreglopago where idmunicipio = ? and id = ? and tipoid =? and anio =? and pagado ='no'";
            PreparedStatement psquery = sesion.con.prepareStatement(sqlquery);
            psquery.setString(1, sesion.getIdmunicipio());
            psquery.setString(2, this.id);
            psquery.setString(3, this.tipoId);
            psquery.setInt(4, this.anio);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();

            if (x == 0) {
                sesion.con.close();
                return false;
            }

            sesion.con.close();
            return true;
        } catch (Exception ex) {

            sesion.MostrarMensajeError("Error", "Clase:ArregloPagoBeans.java\nMetodo:TieneArregloPagoSinCancelar()\nError: " + ex.getMessage().toString());
        }
        return false;
    }

    public boolean Consultar() {
        try {

            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sqlquery = "select * from arreglopago where idmunicipio = ? and id = ? and tipoid =? and anio =? and pagado ='no'";
            PreparedStatement psquery = sesion.con.prepareStatement(sqlquery);
            psquery.setString(1, sesion.getIdmunicipio());
            psquery.setString(2, this.id);
            psquery.setString(3, this.tipoId);
            psquery.setInt(4, this.anio);
            ResultSet rs = psquery.executeQuery();
            rs.next();
            int x = rs.getRow();

            if (x == 0) {
                sesion.con.close();
                return false;
            }
            this.idArregloPago = rs.getInt("idarreglopago");
            this.id = rs.getString("id");
            this.tipoId = rs.getString("tipoid");
            this.anio = rs.getInt("anio");
            fechaArregloPago = rs.getDate("fechaarreglopago");
            morosidadInicial = rs.getDouble("morosidadinicial");
            mesesMorosos = rs.getInt("mesesmorosos");
            abonoInicial = rs.getDouble("abonoinicial");
            palabrasAbonoInicial = rs.getString("palabrasabonoinicial");
            mensualidad = rs.getDouble("mensualidad");
            palabrasAbonoMensual = rs.getString("palabrasabonomensual");
            saldoActual = rs.getDouble("saldoactual");
            pagado = rs.getString("pagado");
            Descripcion = rs.getString("descripcion");
            activo = rs.getString("activo");
            fecha = rs.getDate("fecha");
            sesion.con.close();
            return true;
        } catch (Exception ex) {

            sesion.MostrarMensajeError("Error", "Clase:ArregloPagoBeans.java\nMetodo:TieneArregloPagoSinCancelar()\nError: " + ex.getMessage().toString());
        }
        return false;
    }

    public boolean ActualizarSaldo() {
        try {


            if (TieneArregloPagoSinCancelar() == false) {
                JOptionPane.showMessageDialog(null, "No se puede actualizar no existen arreglos de pago. ", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sql = "UPDATE arreglopago set  saldoactual = ?  " +
                    "WHERE IDARREGLOPAGO = ? and ACTIVO ='si' and IDMUNICIPIO=?";
            PreparedStatement prest = sesion.con.prepareStatement(sql);
            prest.setDouble(1, saldoActual);
            prest.setInt(2, this.idArregloPago);
            prest.setString(3, sesion.getIdmunicipio());

            int count = prest.executeUpdate();
            sesion.con.close();
            if (count == 0) {
                return false;
            }
            return true;
        } catch (Exception ex) {

            sesion.MostrarMensajeError("Error", "Clase:ArregloPagoBeans.java\nMetodo:actualizarSaldo() " + ex.getMessage().toString());
        }
        return false;
    }

    public boolean ActualizarEstatus() {
        try {


            if (TieneArregloPagoSinCancelar() == false) {
                JOptionPane.showMessageDialog(null, "No se puede actualizar no existen arreglos de pago. ", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return false;
            }
            String sql = "UPDATE arreglopago set  pagado ='si'  " +
                    "WHERE IDARREGLOPAGO = ? and ACTIVO ='si' and IDMUNICIPIO=?";
            PreparedStatement prest = sesion.con.prepareStatement(sql);
            prest.setInt(1, this.idArregloPago);
            prest.setString(2, sesion.getIdmunicipio());

            int count = prest.executeUpdate();
            sesion.con.close();
            return true;
        } catch (Exception ex) {

            sesion.MostrarMensajeError("Error", "Clase:ArregloPagoBeans.java\nMetodo:actualizarSaldo() " + ex.getMessage().toString());
        }
        return false;
    }

     public void ActualizarArregloPagoAnulado() {
        try {
            if (sesion.Conectar() == false) {
                JOptionPane.showMessageDialog(null, "No se pudo establecer la conexion", "Mensaje", JOptionPane.INFORMATION_MESSAGE);
                return;
            }
            String sql = "update arreglopago set saldoactual=?, pagado = 'no'  where idmunicipio=?  and anio=? and id=? and tipoid =? and activo='si' ";
            PreparedStatement prest = sesion.con.prepareStatement(sql);
            prest.setDouble(1,getSaldoActual());
            prest.setString(2, getIdMunicipio());
            prest.setInt(3, getAnio());
            prest.setString(4, getId());
            prest.setString(5, getTipoId());

            int count = prest.executeUpdate();
            sesion.con.close();

        } catch (Exception ex) {
            sesion.MostrarMensajeError("Error ", "Clase: MorosidadMensualBeans.java\nActualizarMorosidadAnulado()\n " + ex.getMessage().toString());
        }
        return;
    }
}
